﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ECommerce.DAO.SQL.Seguridad
{
    public static class Perfil
    {
        //Select Methods Helpers
        public static ECommerce.Model.Seguridad.Perfil[] GetPerfiles(string StoreProcedure, ECommerce.DAO.SQL.Parámetro[] Parámetros)
        {
            ECommerce.Model.Seguridad.Perfil Perfil = new ECommerce.Model.Seguridad.Perfil();
            Type DynamicType = Perfil.GetType();
            return ECommerce.DAO.SQL.Seguridad.Perfil.GetPerfilFromObjects(ECommerce.DAO.SQL.SqlHelper.Get(StoreProcedure, Parámetros, DynamicType));
        }
        public static ECommerce.Model.Seguridad.Perfil[] GetPerfilFromObjects(ECommerce.Model.Objeto[] Objetos)
        {
            List<ECommerce.Model.Seguridad.Perfil> result = new List<ECommerce.Model.Seguridad.Perfil>();
            ECommerce.Model.Seguridad.Perfil Perfil;
            foreach (ECommerce.Model.Objeto Objeto in Objetos)
            {
                Perfil = new ECommerce.Model.Seguridad.Perfil();
                Perfil = (ECommerce.Model.Seguridad.Perfil)Objeto;
                if (Perfil != null)
                    if (Perfil.Id != 0)
                        result.Add(Perfil);
            }
            return result.ToArray();
        }

        //Select Methods
        public static ECommerce.Model.Seguridad.Perfil GetPerfilById(int Id)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Id);
            Parámetros.Add(Parámetro);
            ECommerce.Model.Seguridad.Perfil[] Seguridad = ECommerce.DAO.SQL.Seguridad.Perfil.GetPerfiles("GetPerfilById", Parámetros.ToArray());
            if (Seguridad != null)
                if (Seguridad.Length > 0)
                    return Seguridad[0];
            return null;
        }
        public static ECommerce.Model.Seguridad.Perfil[] GetPerfilesDelSistema()
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            return ECommerce.DAO.SQL.Seguridad.Perfil.GetPerfiles("GetPerfilesDelSistema", Parámetros.ToArray());
        }
        public static ECommerce.Model.Seguridad.Perfil[] GetPerfilesByPersonaId(int IdPersona)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new Parámetro("@Id", System.Data.SqlDbType.BigInt, IdPersona);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.Seguridad.Perfil.GetPerfiles("GetPerfilesByPersonaId", Parámetros.ToArray());
        }

        //Insert Methods
        public static int SetPerfil(ECommerce.Model.Seguridad.Perfil Perfil)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@Id", System.Data.SqlDbType.BigInt, Perfil.Id);
            Parámetros.Add(Parámetro);
            return ECommerce.DAO.SQL.SqlHelper.Insert("SetPerfil", Parámetros.ToArray());
        }
        public static void AddPerfilToPersona(ECommerce.Model.Seguridad.Perfil Perfil, ECommerce.Model.Personas.Persona Persona)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdPersona", System.Data.SqlDbType.BigInt, Persona.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdPerfil", System.Data.SqlDbType.BigInt, Perfil.Id);
            Parámetros.Add(Parámetro);
            ECommerce.DAO.SQL.SqlHelper.Insert("AddPerfilToPersona", Parámetros.ToArray());
        }

        internal static void DelPerfilFromPersona(ECommerce.Model.Seguridad.Perfil Perfil, ECommerce.Model.Personas.Persona Persona)
        {
            List<ECommerce.DAO.SQL.Parámetro> Parámetros = new List<ECommerce.DAO.SQL.Parámetro>();
            ECommerce.DAO.SQL.Parámetro Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdPersona", System.Data.SqlDbType.BigInt, Persona.Id);
            Parámetros.Add(Parámetro);
            Parámetro = new ECommerce.DAO.SQL.Parámetro("@IdPerfil", System.Data.SqlDbType.BigInt, Perfil.Id);
            Parámetros.Add(Parámetro);
            ECommerce.DAO.SQL.SqlHelper.Insert("DelPerfilFromPersona", Parámetros.ToArray());
        }
    }
}
